% PARAMETROS
% f : Funcion a aplicar el metodo.
% I : Intervalo de busqueda.
% e : Tolerancia de error.
% m : Numero maximo de iteraciones permitidas.

% RESULTADOS
% hx : Lista de aproximaciones a la raiz.
% hf : Lista de imagenes de las aproximaciones a la raiz.

	  
function [hx, hf] = biseccion(f,I,e,m);

    a = I(1);
    b = I(2);
    c = (a + b)/2;
    hx = [];
    hf = [];
    
    hx = [hx,c];
    hf = [hf,f(c)];
    k = 0;
    
    while(abs(f(c)) > e && k < m)

		if(f(a)*f(b) < 0)	 	% hay una raiz en el intervalo [a,b]
			if(f(a)* f(c) < 0)	 	% la raiz esta en el subintervalo [a,c]
                b = c;
			else  			% la raiz esta en el subintervalo [c,b]
                a = c;	 
			endif
			c = (a + b)/2	;		% Buscamos en el nuevo subintervalo
			hx = [hx,c];
			hf = [hf,f(c)];
			++k;
		else
			fprintf('Ingrese un intervalo correcto para esta funcion\n');
		endif
    
    endwhile
   
    
endfunction


